package model

import (
	"github.com/jinzhu/gorm"
	"go-movies/db"
)

type User struct {
	Username string `gorm:"size:100;not null" json:"username"`
	Password string `gorm:"size:50;not null" json:"password"`
	Email string `gorm:"size:50;not null" json:"email"`
	Cover string `gorm:"size:200;" json:"cover"`
	LikeMovie []MovieInfo `gorm:"ForeignKey:MovieId;AssociationForeignKey:ID" json:"like_movie"`
	Status int `gorm:"default:0; not null" json:"status"`  // 当前用户状态: 0为注册但为激活，1为已激活用户
	BaseModel
}

func init(){
	db := db.GetConn()
	db.AutoMigrate(&User{},&MovieInfo{})
}

// 添加一个用户:
func AddUser(user *User) *gorm.DB {
	db := db.GetConn()
	return db.Create(&user)
}

// 查询一个用户:
func SelectOneUser(user *User, username string) *gorm.DB {
	db := db.GetConn()
	return db.Where("username = ?", username).First(user)
}

// 激活用户:
func ActivedUser(user *User) bool {
	db := db.GetConn()
	db.Model(user).Where("id = ?", user.ID).Update("status", 1)
	if db.Error == nil {
		return true
	}
	return false
}

// 删除一个用户:
func DeleteOneUser(user *User){
	db := db.GetConn()
	db.Delete(&user)
}

// 检测用户名或者邮箱是否已经被注册
func CheckUserInfoValid(user *User) bool {
	db := db.GetConn()
	db.Where("username = ?", user.Username).Or("email = ?", user.Email).Find(user)
	if user.ID != 0 {
		return false
	}else{
		return true
	}
}

// 获取用户信息:
func GetUserInfo(user *User, username string) *gorm.DB {
	db := db.GetConn()
	db.Select("username, email, cover, like_movie").Where("username = ?", username)
	return db.Model(user).Preload("LikeMovie").Find(user)
}